//进行axios的二次封装（使用请求拦截器和响应拦截器）
import axios from "axios"
import { ElMessage } from "element-plus"
const request = axios.create({
  //基础路径
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 5000 //所有请求5秒内完成，超过五秒不管请求成功还是失败都算是失败
})

//给request实例添加请求拦截器
request.interceptors.request.use((config) => {
  //config配置对象，header属性请求头，经常给服务端携带公共参数
  //返回配置对象
  // console.log(config, 'config')
  // config.headers.token = '456'
  return config
})

////给request实例添加响应拦截器(接收两个回调，一个成功，一个失败)
request.interceptors.response.use((response) => {
  console.log(response, 'response')
  // if (response.data.data) {
  //   ElMessage({
  //     type: 'success',
  //     message: response.data.data.message
  //   })
  // }
  return response.data;


}, (error) => {
  console.log(error, ';error')
  //处理网络错误
  let msg = '';
  let status = error.response.status;
  switch (status) {
    case 401:
      msg = "token过期";
      break;
    case 403:
      msg = '无权访问';
      break;
    case 404:
      msg = "请求地址错误";
      break;
    case 500:
      msg = "服务器出现问题";
      break;
    default:
      msg = "无网络";

  }
  ElMessage({
    type: 'error',
    message: msg
  })
  return Promise.reject(error);
})

export default request